package Objetos 
{
	import flash.display.MovieClip;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	
	/**
	 * ...
	 * @author Thiago Aramaki
	 */
	public class Heroi extends MovieClip
	{
		public var ST_dir				:String;
		private var UI_player			:uint;
		public var BO_cima				:Boolean;
		private var BO_baixo			:Boolean;
		private var BO_esquerda			:Boolean;
		private var BO_direita			:Boolean;
		public var NB_velocidadeHeroiX	:Number = 5;
		public var NB_velocidadeHeroiY	:Number = 0;
		private var NB_gravidade		:Number = 0.9;
		
		public function Heroi(player:uint) 
		{
			UI_player = player;
			Main.getInstance().stage.addEventListener(KeyboardEvent.KEY_DOWN, pressionar, false, 0, true);
			Main.getInstance().stage.addEventListener(KeyboardEvent.KEY_UP, soltar, false, 0, true);
		}
		
		public function pressionar(e:KeyboardEvent):void
		{
			if (UI_player == 1)
			{
				switch(e.keyCode)
				{	
					case Keyboard.W:
						if (!BO_cima)
						{
							NB_velocidadeHeroiY = -14;
							//trace("Pulando");
							BO_cima = true;
						}
						break;
						
					case Keyboard.S:
						BO_baixo = true;
						break;	
					
					case Keyboard.A:
						ST_dir = "esquerda";
						BO_esquerda = true
						break;
					
					case Keyboard.D:
						ST_dir = "direita";
						BO_direita = true;
						break;
				}
			} 
			
			
		}
		
		public function soltar(e:KeyboardEvent):void
		{
			if (UI_player == 1)
			{
				switch(e.keyCode)
				{
					case Keyboard.W:
						//NB_velocidadeHeroiY = -10;
						//BO_cima = false;
						break;
						
					case Keyboard.S:
						BO_baixo = false;
						break;
						
					case Keyboard.A:
						BO_esquerda = false;
						break;
						
					case Keyboard.D:
						BO_direita = false;
						break;
						
				}
			}
			
		}
		
		private function Movimentar():void 
		{
			/*
			 Somente permite o deslocamento do herói se ele não ultrapassar a sua altura / 2
			 Lembre-se que o ponto de registro está no meio, por isso altura /2
			 && (significa AND (Lógica E) 
			 */
			if (BO_esquerda && this.x >= 24 && !BO_cima)
			{
				this.gotoAndStop("Andando_esquerda");
				this.x -= NB_velocidadeHeroiX;
			}
			/*
			 Somente permite o deslocamento do herói se ele não ultrapassar a altura da tela - a sua altura / 2 
			 Lembre-se que o ponto de registro está no meio, por isso altura /2
			 && (significa AND (Lógica E) 
			 */
			else if (BO_direita && this.x <= 616 && !BO_cima)
			{
				this.gotoAndStop("Andando_direita");
				this.x += NB_velocidadeHeroiX;
				
			}
			
			else if (BO_cima && BO_direita) 
			{
				this.gotoAndStop("Pulando_direita")
				this.x += NB_velocidadeHeroiX;
			}
			
			else if (BO_cima && BO_esquerda) 
			{
				this.gotoAndStop("Pulando_esquerda")
				this.x -= NB_velocidadeHeroiX;
			}
			
			else if (BO_cima)
			{
				this.gotoAndStop("Pulando_direita");
			}
			
			else 
			{
				if (ST_dir == "direita")
					this.gotoAndStop("Parado_direita");
				else 
					this.gotoAndStop("Parado_esquerda");
			}
			
		}
		
		
		private function Gravidade():void 
		{
			NB_velocidadeHeroiY += NB_gravidade;
			this.y += NB_velocidadeHeroiY;
			//if (NB_velocidadeHeroiY != 0)
				//this.gotoAndStop("Pulando_direita")
		}
		
		public function update():void 
		{
			Gravidade();
			Movimentar();
		}
		
	}

}